package com.stellar.circle.controller.admin.sComment.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.stellar.core.util.DateFormatConstants;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;


/**
 * 评论表基础视图对象
 *
 * @author Jqchan
 * @since 2025-05-19
 */
@Data
public class SCommentBaseVO implements Serializable {
    private static final long serialVersionUID = 462463563983181047L;

    /**
     * 评论ID，主键
     * (数据库字段: id)
     */
    private Long id;

    /**
     * 评论用户ID（关联user表id）
     * (数据库字段: user_id)
     */
    private Long userId;

    /**
     * 关联来源ID（帖子ID或闲置物品ID）
     * (数据库字段: source_id)
     */
    private Long sourceId;

    /**
     * 来源类型：post-帖子/idle-闲置物品
     * (数据库字段: source_type)
     */
    private String sourceType;

    /**
     * 父评论ID（关联本表id，NULL表示一级评论）
     * (数据库字段: parent_id)
     */
    private Long parentId;

    /**
     * 根评论ID（关联本表id，NULL表示一级评论）
     * (数据库字段: root_id)
     */
    private Long rootId;

    /**
     * 评论内容
     * (数据库字段: content)
     */
    private String content;

    /**
     * 评论图片（JSON数组格式存储URL）
     * (数据库字段: images)
     */
    private String images;

    /**
     * 是否匿名：0-实名/1-匿名
     * (数据库字段: is_anonymous)
     */
    private Integer isAnonymous;

    /**
     * 是否被隐藏：0-否/1-是（敏感内容自动隐藏）
     * (数据库字段: is_hidden)
     */
    private Integer isHidden;

    /**
     * 隐藏原因
     * (数据库字段: hidden_reason)
     */
    private String hiddenReason;

    /**
     * 状态：published-已发布/hidden-已隐藏/deleted-已删除
     * (数据库字段: comment_status)
     */
    private String commentStatus;

    /**
     * 点赞数
     * (数据库字段: like_count)
     */
    private Integer likeCount;

    /**
     * 回复数
     * (数据库字段: reply_count)
     */
    private Integer replyCount;

    /**
     * 创建时间
     * (数据库字段: create_time)
     */
    @JsonFormat(pattern = DateFormatConstants.DATETIME_FORMAT_YYYY_MM_DD_HH_MM_SS, timezone = DateFormatConstants.TIME_ZONE_GMT_PLUS_8)
    private Date createTime;

    /**
     * 创建人
     * (数据库字段: create_by)
     */
    private String createBy;

    /**
     * 修改时间
     * (数据库字段: update_time)
     */
    private Date updateTime;

    /**
     * 修改人
     * (数据库字段: update_by)
     */
    private String updateBy;

    /**
     * 是否删除：1-删除/0-未删除
     * (数据库字段: is_deleted)
     */
    private Integer isDeleted;

}
